xtrace "poly-cylinder" { procedure pcyl l,m,n, a,b,c, r,h, pn { nvar pn=10; nvar h=r; var t1, x1,y1; var t2, x2,y2; para l,m,n; leverz a,b,c; sim r,r,h/2; boundary sphere 0,0,0, sqrt (2) { var i=0; while lt (i - pn) { t1=2*PI*i/pn; t2=2*PI*(i + 1)/pn; x1=cos (t1); y1=sin (t1); x2=cos (t2); y2=sin (t2); poly è„ñ  { pt 0,0,1; pt x1,y1,1; pt x2,y2,1; } poly ë§ñ  { pt x1,y1,1; pt x1,y1,-1; pt x2,y2,-1; pt x2,y2,1; } poly íÍñ  { pt 0,0,-1; pt x1,y1,-1; pt x2,y2,-1; } i=i + 1; } } } }